/**
 *
 * @author Eduardo Cavero Guzmán
 * @date   25/05/2010
 */


function comprobarLongitud(x, longitud) {
    if (x.length > longitud) {
       Ext.MessageBox.show({
          title: "Error",
          msg: "Valor debe tener menos de "+longitud+" caracteres",
          buttons: Ext.MessageBox.OK,
          icon: Ext.MessageBox.ERROR
       });
        return false;
    }
    return true;
}

function esNumero(x, indice){
    if (isNaN(x)) {
       Ext.MessageBox.show({
          title: "Error",
          msg: "Valor no es numérico.",
          buttons: Ext.MessageBox.OK,
          icon: Ext.MessageBox.ERROR
       });
        indice.validar = false;
    } else {
        indice.validar = true;
    }
}

function esFecha(x, indice) {
    new Ajax.Request("validar-fecha", {
        method: "post",
        asynchronous: false,
        parameters: {
            fecha: x,
            patron: "dd/MM/yyyy"
        },
        onSuccess: function(t) {
            var data = t.responseText.evalJSON();
            if (!data.success) {
               Ext.MessageBox.show({
                  title: "Error",
                  msg: "Fecha no válida.",
                  buttons: Ext.MessageBox.OK,
                  icon: Ext.MessageBox.ERROR
               });

            }
            indice.validar = data.success;
        }

    });
}

function continuar(x, indice){
    /*
     * Esta función no debe hacer nada; sirve como validación para datos
     * de tipo cadena
     */
    indice.validar = true;
}

function indexarExpediente(){
    var registroActual = null;
    var regDocumentoActual = null;
    var dsExpedientes = new Ext.data.Store({
        autoDestroy:true,
        url: "lista-expedientes",
        reader: new Ext.data.JsonReader({
            root: "expedientes",
            fields:
            [
                {
                  name: "nexpeIdentificador",
                  type: "integer"
                },
                {
                    name: "cexpeCodigoArchivo"
                },
                {
                    name: "strNombreCompleto"
                }
            ]
        })
    });
    dsExpedientes.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error",response.responseText);
    });

    var grdExpedientes = new Ext.grid.GridPanel({
        title: "Expedientes",
        store: dsExpedientes,
        stripeRows: true,
        height: 200,
        tbar:
            [
                {
                    text: "Buscar",
                    handler: function() {
                        buscarExpediente();
                    }
                }
            ],
        columns:
            [
                {
                    header: "Código",
                    dataIndex: "cexpeCodigoArchivo"
                },
                {
                    header: "Personal",
                    dataIndex: "strNombreCompleto",
                    width: 300
                }
            ]
    });

    var buscarExpediente = function() {
        var vntBuscar = new Ext.Window({
           closeAction: "destroy",
           width: 400,
           height: 130,
           modal: true,
           title: "Buscar expediente",
           autoLoad:{
                url: "frmBuscarExpediente.html"
           },
           bbar:
               [
                {
                    text: "Aceptar",
                    handler: function() {
                        aceptar();
                    }
                }
               ]
        });

        var aceptar = function(){
            var form = $("frmBuscarExpediente");
            var cexpeCodigoArchivo = form.cexpeCodigoArchivo.value;
            var strNombreCompleto = form.strNombreCompleto.value;
            dsExpedientes.load({
                params:
                    {
                        cexpeCodigoArchivo: cexpeCodigoArchivo,
                        strNombreCompleto: strNombreCompleto
                    }
            });
            vntBuscar.destroy();
        }

        vntBuscar.show();
    }

    grdExpedientes.on("render",function(component){
       //dsExpedientes.load();
    });

    grdExpedientes.on("rowclick",function(grid,rowIndex,e){
       registroActual = dsExpedientes.getAt(rowIndex);
       var nexpeIdentificador = registroActual.get("nexpeIdentificador");
       dsDocumentosDigitalizados.load(
       {
           params:{nexpeIdentificador:nexpeIdentificador}
       });
    });

    var dsDocumentosDigitalizados = new Ext.data.Store({
       autoDestroy: true,
       url: "lista-documentos-digitalizados",
       reader: new Ext.data.JsonReader({
           root: "documentosDigitalizados",
           fields:
               [
                {
                    name: "ndodiIdentificador",
                    type: "integer"
                },
                {
                    name: "ntidoIdentificador",
                    type: "integer"
                },
                {
                    name: "ctidoDescripcion"
                },
                {
                    name: "cdodiDescripcion"
                }
               ]
       })
    });

    dsDocumentosDigitalizados.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error",response.responseText);
    });

    var grdDocumentos = new Ext.grid.GridPanel({
       title: "Documentos Digitalizados",
        store: dsDocumentosDigitalizados,
        stripeRows: true,
        height: 200,
        columns:
        [
            {
                header: "Tipo Documento",
                dataIndex: "ctidoDescripcion"
            },
            {
                header: "Descripcion",
                dataIndex: "cdodiDescripcion"
            }
        ],
        tbar:
            [
                {
                    text: "Indexar documento",
                    handler: function(){
                        indexarDocumento();
                    }
                }
            ]
    });

    grdDocumentos.on("render", function(component){
        dsDocumentosDigitalizados.load();
    });

    grdDocumentos.on("rowclick",function(grid,rowIndex,e){
        regDocumentoActual = dsDocumentosDigitalizados.getAt(rowIndex);
    });


    var indexarDocumento = function(){
        var dsIndices = new Ext.data.Store({
            autoDestroy: true,
            url: "lista-indices!indexar",
            reader: new Ext.data.JsonReader({
                root: "indices",
                fields:
                    [
                        {
                            name: "nindiIdentificador",
                            type: "integer"
                        },
                        {
                            name: "cindiNombre"
                        },
                        {
                            name: "ctidaDescripcion"
                        },
                        {
                            name: "nindiLongitud",
                            type: "integer"
                        },
                        {
                            name: "cindeValor"
                        }
                    ]
            })
        });

        dsIndices.on("exception",function(proxy, type, action, options, response, arg){
            Ext.MessageBox.alert("Error",response.responseText);
        });

        var grdIndices = new Ext.grid.EditorGridPanel({
            store: dsIndices,
            stripeRows: true,
            height: 500,
            columns:
                [
                    {
                        header: "Índice",
                        dataIndex: "cindiNombre"
                    },
                    {
                        header: "Tipo",
                        dataIndex: "ctidaDescripcion"
                    },
                    {
                        header: "Longitud",
                        dataIndex: "nindiLongitud"
                    },
                    {
                        header: "Valor",
                        dataIndex: "cindeValor",
                        editor: new Ext.form.TextField({
                            allowBlank:true
                        })
                    }
                ]
        });

        grdIndices.on("render", function(component){
            var ntidoIdentificador = regDocumentoActual.get("ntidoIdentificador");
           dsIndices.load({
               params: {ntidoIdentificador: ntidoIdentificador}
           });
        });
        
        var ndodiIdentificador = regDocumentoActual.get("ndodiIdentificador");
        var pnlFolios = new Ext.Panel({
           autoLoad: {
               url: "lista-id-folios",
               params: {ndodiIdentificador: ndodiIdentificador},
               callback: function(el,success,response,options){
                   var folios = Ext.query(".folio");
                   Ext.each(folios, function(item,index){
                       item.onclick=function(){
                           var nfoliIdentificador=item.id.split("-")[1];
                           verImagen(nfoliIdentificador);
                       }
                   });
               }
           }
        });


        var verImagen = function(nfoliIdentificador){
            var panel = Ext.get("imagen-folio");
            panel.load({
                url: "imagen-folio.jsp",
                params: {
                    idFolio: nfoliIdentificador
                }
            });
        }
        
        var pnlImagenFolios = new Ext.Panel({
            width: 600,
            height: 500,
            items:
            [
                new Ext.Panel({
                    autoEl:
                        {
                            tag: "div",
                            id: "imagen-folio",
                            style: "width:595px; height:482px; overflow:scroll"
                        }
                }),
                pnlFolios
            ]
        });

        var tipoDocumento = " - "+regDocumentoActual.get("ctidoDescripcion")
            +" - "+regDocumentoActual.get("cdodiDescripcion");

        var vntIndices = new Ext.Window({
            title: "Indexar Documento" + tipoDocumento,
            width: 1150,
            height: 570,
            modal: true,
            bbar:
                [
                    {
                        text: "Guardar",
                        handler: function() {
                            guardar(vntIndices);
                        }
                    }
                ],
            autoLoad: {
                url: "PlantillaIndexacion.html",
                callback: function(el,success,response,options) {
                    grdIndices.render("divEditarIndices");
                    pnlImagenFolios.render("divImagenFolios");
                }
            }
        });

        var guardar = function(ventana){
            var ndodiIdentificador = regDocumentoActual.get("ndodiIdentificador");
            var ntidoIdentificador = regDocumentoActual.get("ntidoIdentificador");
            Ext.Ajax.request({
               url: "lista-indices!indexar",
               params: {ntidoIdentificador: ntidoIdentificador},
               success: function(response, options){
                   var data = Ext.util.JSON.decode(response.responseText);
                   for(var i = 0; i < data.indices.length; i++) {
                       var valor = dsIndices.getAt(i).get("cindeValor");
                       var longitud = dsIndices.getAt(i).get("nindiLongitud");
                       var nindiIdentificador = dsIndices.getAt(i).get("nindiIdentificador");
                       data.indices[i].ctidaFuncionValidador(valor);
                       var validar = data.indices[i].validar;
                       validar = validar && comprobarLongitud(valor, longitud);
                       if(validar) {
                           Ext.Ajax.request({
                               url: "indexado!guardar",
                               params:
                               {
                                   ndodiIdentificador: ndodiIdentificador,
                                   nindiIdentificador: nindiIdentificador,
                                   cindeValor: valor
                               },
                               success: function(response, options) {
                                   var data = Ext.util.JSON.decode(response.responseText);
                                   if(!data.success) {
                                       Ext.MessageBox.show({
                                          title: "Error",
                                          msg: data.mensaje,
                                          buttons: Ext.MessageBox.OK,
                                          icon: Ext.MessageBox.ERROR
                                       });
                                   } else {
                                       ventana.destroy();
                                   }
                               }
                           });
                       }
                   }
               }
            });
        }

        vntIndices.show();
    }

    var pnlIndexar = new Ext.Panel({
        items:
        [
            grdExpedientes,
            grdDocumentos
        ]
    });

   var win = new Ext.Window({
        title:'Indexar Expediente',
        closeAction:'destroy',
        width:1055,
        height:800,
        x:0,
        y:0,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        layout: 'fit',
        items:pnlIndexar
    });
    win.show();
}

